OpenLayers 系列学习(一) 您所在的位置:网站首页 openlayers 截图 OpenLayers 系列学习(一)

OpenLayers 系列学习(一)

2023-05-16 03:24| 来源: 网络整理| 查看: 265

简单介绍

文章仅为学习笔记,本人也是OpenLayers小白,如有错误,欢迎指正

官网地址:https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html#addLayer 

OpenLayers 3对OpenLayers网络地图库进行了根本的重新设计。版本2虽然被广泛使用,但从JavaScript开发的早期发展阶段开始,已日益现实出它的落后。 OL3已运用现代的设计模式从底层重写。OpenLayers 3同时设计了一些主要的新功能,如显示三维地图,或使用WebGL快速显示大型矢量数据集,这些功能将在以后的版本中加入。

正文

OpenLayers 3的核心部件是Map(ol.Map)。它被呈现到对象target容器(例如,包含在地图的网页上的div元素)。所有地图的属性可以在构造时进行配置,或者通过使用setter方法,如setTarget()。

ol. View负责地图的中心点,放大,投影之类的设置。

一个ol.View实例包含投影projection,该投影决定中心center 的坐标系以及分辨率的单位,如果没有指定(如下面的代码段),默认的投影是球墨卡托(EPSG:3857),以米为地图单位。 放大zoom 选项是一种方便的方式来指定地图的分辨率,可用的缩放级别由maxZoom (默认值为28)、zoomFactor (默认值为2)、maxResolution (默认由投影在256×256像素瓦片的有效成都来计算) 决定。起始于缩放级别0,以每像素maxResolution 的单位为分辨率,后续的缩放级别是通过zoomFactor区分之前的缩放级别的分辨率来计算的,直到缩放级别达到maxZoom 。

Source OpenLayers 3使用ol.source.Source子类获取远程数据图层,包含免费的和商业的地图瓦片服务,如OpenStreetMap、Bing、OGC资源(WMS或WMTS)、矢量数据(GeoJSON格式、KML格式…)等。

Layer 一个图层是资源中数据的可视化显示,OpenLayers 3包含三种基本图层类型:ol.layer.Tile、ol.layer.Image 和 ol.layer.Vector。 ol.layer.Tile 用于显示瓦片资源,这些瓦片提供了预渲染,并且由特定分别率的缩放级别组织的瓦片图片网格组成。 ol.layer.Image用于显示支持渲染服务的图片,这些图片可用于任意范围和分辨率。 ol.layer.Vector用于显示在客户端渲染的矢量数据。

需要明白的一点是,Source和Layer是一对一的关系,有一个Source,必然需要一个Layer,然后把这个Layer添加到Map上,就可以显示出来了。通过官网的API搜索ol.source可以发现有很多不同的Source,但归纳起来共三种:ol.source.Tile,ol.source.Image和ol.source.Vector。

ol.source.Tile对应的是瓦片数据源,现在网页地图服务中,绝大多数都是使用的瓦片地图,而OpenLayers 3作为一个WebGIS引擎,理所当然应该支持瓦片。ol.source.Image对应的是一整张图,而不像瓦片那样很多张图,从而无需切片,也可以加载一些地图,适用于一些小场景地图。ol.source.Vector对应的是矢量地图源,点,线,面等等常用的地图元素(Feature),就囊括到这里面了。这样看来,只要这两种Source就可以搞定80%的需求了。

我们先了解最为复杂的ol.source.Tile,其叶子节点类有很多,大致可以分为几类:

在线服务的Source,包括ol.source.BingMaps(使用的是微软提供的Bing在线地图数据),ol.source.MapQuest(使用的是MapQuest提供的在线地图数据)(注: 由于MapQuest开始收费,ol v3.17.0就移除了ol.source.MapQuest),ol.source.OSM(使用的是Open Street Map提供的在线地图数据),ol.source.Stamen(使用的是Stamen提供的在线地图数据)。没有自己的地图服务器的情况下,可直接使用它们,加载地图底图。

 一、ol.Map对象的主要属性

OpenLayers 系列学习(一)_缩放

二、Layer的主要属性

OpenLayers 系列学习(一)_OpenLayers_02

 

简单示例 

一、创建一个简单的地图

// 创建地图 new ol.Map({ // 设置地图图层 layers: [ // 创建一个使用Open Street Map地图源的瓦片图层 new ol.layer.Tile({source: new ol.source.OSM()}) ], // 设置显示地图的视图 view: new ol.View({ center: [0, 0], // 定义地图显示中心于经度0度,纬度0度处 zoom: 2 // 并且定义地图显示层级为2 }), // 让id为map的div作为地图的容器 target: 'map' });

二、移动地图

// 向左移动地图 function moveToLeft() { var view = map.getView(); var mapCenter = view.getCenter(); // 让地图中心的x值增加,即可使得地图向左移动,增加的值根据效果可自由设定 mapCenter[0] += 50000; view.setCenter(mapCenter); map.render(); } // 向右移动地图 function moveToRight() { var view = map.getView(); var mapCenter = view.getCenter(); // 让地图中心的x值减少,即可使得地图向右移动,减少的值根据效果可自由设定 mapCenter[0] -= 50000; view.setCenter(mapCenter); map.render(); } // 向上移动地图 function moveToUp() { var view = map.getView(); var mapCenter = view.getCenter(); // 让地图中心的y值减少,即可使得地图向上移动,减少的值根据效果可自由设定 mapCenter[1] -= 50000; view.setCenter(mapCenter); map.render(); } // 向下移动地图 function moveToDown() { var view = map.getView(); var mapCenter = view.getCenter(); // 让地图中心的y值增加,即可使得地图向下移动,增加的值根据效果可自由设定 mapCenter[1] += 50000; view.setCenter(mapCenter); map.render(); } // 移动到成都 function moveToChengDu() { var view = map.getView(); // 设置地图中心为成都的坐标,即可让地图移动到成都 view.setCenter(ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857')); map.render(); } // 放大地图 function zoomIn() { var view = map.getView(); // 让地图的zoom增加1,从而实现地图放大 view.setZoom(view.getZoom() + 1); } // 缩小地图 function zoomOut() { var view = map.getView(); // 让地图的zoom减小1,从而实现地图缩小 view.setZoom(view.getZoom() - 1); }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有